package com.sugar.queryinfo.module.business.service.userextend;

import java.math.BigDecimal;
import java.util.*;
import javax.validation.*;
import javax.validation.constraints.NotNull;

import com.sugar.queryinfo.module.business.controller.admin.userextend.vo.*;
import com.sugar.queryinfo.module.business.dal.dataobject.userextend.UserExtendDO;
import com.sugar.queryinfo.framework.common.pojo.PageResult;
import com.sugar.queryinfo.framework.common.pojo.PageParam;

/**
 * 用户信息拓展 Service 接口
 *
 * @author Ysugar
 */
public interface UserExtendService {

    void updateUserBalance(@Valid UserExtendSaveReqVO reqVO);

    /**
     * 创建用户信息拓展
     *
     * @param userId 用户ID
     */
    void createUserExtend(@NotNull(message = "用户ID不能为空") Long userId);

    /**
     * 删除用户信息拓展
     *
     * @param userId 用户ID
     */
    void deleteUserExtend(Long userId);

    /**
     * 获得用户信息拓展
     *
     * @param id 编号
     * @return 用户信息拓展
     */
    UserExtendDO getUserExtend(Long id);

    /**
     * 通过用户ID获得用户信息拓展
     *
     * @param userId 用户ID
     * @return 用户信息拓展
     */
    UserExtendDO getUserExtendByUserId(Long userId);

    /**
     * 获得用户信息拓展分页
     *
     * @param pageReqVO 分页查询
     * @return 用户信息拓展分页
     */
    PageResult<UserExtendRespVO> getUserExtendPage(UserExtendPageReqVO pageReqVO);

    BigDecimal refreshUserBalance(Long userId);

    String getUserQrCode(Long userId);

    String refreshUserQrCode(Long userId);
}